# _*_ encoding:utf-8 _*_

"""
    自定义文件存储后端，实现拼接完整的图片链接

    Storage： 默认Django存储后端，决定了外面文件类型字段的新建/保存和访问
"""

from django.core.files.storage import Storage  # Django默认的存储后端
from django.conf import settings

from ihome.utils.nowTime import nowtime
from ihome.libs.upyun import up


class UpYuntorage(Storage):

    def __init__(self, fdfs_base_url=None):
        self.upyun_base_url = fdfs_base_url or settings.UPYUN_BASE_URL

    def _open(self, name, mode='rb'):
        # 功能： 打开django本地文件
        pass

    def _save(self, name, file, max_length=None):
        # 功能：保存文件  --> 项目二实现

        img_name = nowtime + file.name

        try:
            up.put(f'/ihome/img/{img_name}', file.read())
        except Exception as e:
            raise e

        return img_name

    def exists(self, name):
        """django判断文件名是否可用"""
        return False

    def url(self, name):
        # 功能： 拼接返回完整的图片链接
        # 参数: name是文件索引标识（存储在mysql中的文件id）

        return self.upyun_base_url + name








